home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / SourceCode / OOP_Course / Examples / DragDemo_1.1 / MouseView.m < prev    next >
Text File  |  1992-12-19  |  2KB  |  83 lines

  1. /*
  2.  *    MouseView --  John Glover, adapted from MouseTracker by Randy Nelson
  3.  *    An abstract class that manages a modal loop for tracking the mouse
  4.  *
  5.  */
  6.  
  7. #import "MouseView.h"
  8.  
  9. @implementation MouseView
  10.  
  11.  
  12.  
  13. - setTrackingRect:sender
  14. {
  15.     NXRect myFrame = frame;
  16.     [[self superview] convertRect:&myFrame toView:nil];
  17.     [window setTrackingRect:&myFrame
  18.         inside:NO
  19.         owner:self
  20.         tag:23
  21.         left:NO
  22.         right:NO];
  23.     return self;
  24. }
  25.  
  26. - mouseDown:(NXEvent *)e
  27.  {
  28.     NXPoint startPoint = e->location, nextPoint;
  29.     int looping = YES;
  30.     int oldMask = [window addToEventMask:NX_MOUSEDRAGGEDMASK];
  31.     
  32.     /* do first mouse down action */
  33.     [self convertPoint:&startPoint fromView:nil];
  34.     [self mouseDownAction:&startPoint];
  35.     
  36.     while (looping){
  37.     e = [NXApp getNextEvent:NX_MOUSEUPMASK|NX_MOUSEDRAGGEDMASK];
  38.     nextPoint = e->location;
  39.     [self convertPoint:&nextPoint fromView:nil];
  40.     if(e->type == NX_MOUSEDRAGGED){
  41.         [superview autoscroll:e];
  42.  
  43.         /* do continuing mouse dragged action */
  44.         [self mouseDraggedAction:&nextPoint];
  45.     }
  46.     else{
  47.         looping = NO;
  48.  
  49.         /* do mouse up action */
  50.         [self mouseUpAction:&nextPoint];
  51.     }    
  52.     }
  53.     [window setEventMask:oldMask];
  54.     return self;
  55.  }
  56.  
  57. - mouseEntered:(NXEvent *)e
  58. {
  59.     return [super mouseEntered:e];
  60. }
  61.  
  62. - mouseExited:(NXEvent *)e
  63. {
  64.     return [super mouseExited:e];
  65. }
  66.  
  67. - mouseDownAction:(NXPoint *)currentLocation
  68. {    
  69.     return self;
  70. }
  71.  
  72. - mouseDraggedAction:(NXPoint *)currentLocation
  73. {
  74.     return self;
  75. }
  76.  
  77. - mouseUpAction:(NXPoint *)currentLocation
  78. {
  79.     return self;
  80. }
  81.  
  82. @end
  83.